package com.jcark.ui.view.recyclerview;

import android.content.Context;

import androidx.annotation.ColorRes;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.jcark.ui.R;

/**
 * Description: 列表分隔线工具类<br>
 *
 * @author King.Zi<br>
 * @date 2022/6/9<br>
 * Email: 78688689@qq.com
 */
public class ListDividerUtils {
    /**
     * 列表分隔线(默认为1dp)
     *
     * @param context
     * @param isShowLastLine 是否显示最后一条分隔线
     * @return 列表分隔线
     */
    public static RecyclerView.ItemDecoration getListDivider(@NonNull Context context, boolean isShowLastLine) {
        return getListDivider(context, 1f, R.color.list_line, isShowLastLine);
    }

    /**
     * 列表分隔线(分隔线颜色为默认值#F6F6F6)
     *
     * @param context        上下文
     * @param span           分隔线高度，单位dp
     * @param isShowLastLine 是否显示最后一条分隔线
     * @return 列表分隔线
     */
    public static RecyclerView.ItemDecoration getListDivider(@NonNull Context context, float span,
                                                             boolean isShowLastLine) {
        return getListDivider(context, span, R.color.list_line, isShowLastLine);
    }

    /**
     * 列表分隔线
     *
     * @param context        上下文
     * @param span           分隔线高度，单位dp
     * @param colorResId     颜色
     * @param isShowLastLine 是否显示最后一条分隔线
     * @return 列表分隔线
     */
    public static RecyclerView.ItemDecoration getListDivider(@NonNull Context context, float span,
                                                             @ColorRes int colorResId,
                                                             boolean isShowLastLine) {
        return new LinearItemDecoration.Builder(context)
                .setSpan(span)
                .setColorResource(colorResId)
                .setShowLastLine(isShowLastLine)
                .build();
    }

    /**
     * 网络列表分隔线
     *
     * @param context        上下文
     * @param horizontalSpan 水平分隔线高度，单位dp
     * @param verticalSpan   垂直分隔线高度，单位dp
     * @param colorResId     颜色
     * @param isShowLastLine 是否显示最后一条分隔线
     * @return 网络列表分隔线
     */
    public static RecyclerView.ItemDecoration getGridDivider(@NonNull Context context, float horizontalSpan,
                                                             float verticalSpan, @ColorRes int colorResId,
                                                             boolean isShowLastLine) {
        return new GridItemDecoration.Builder(context)
                .setHorizontalSpan(horizontalSpan)
                .setVerticalSpan(verticalSpan)
                .setColorResource(colorResId)
                .setShowLastLine(isShowLastLine)
                .build();
    }
}
